A variety of applications continue to rely on the effectiveness of random number generation. A random number generator provides a mechanism for producing a series of numbers that, in theory, are unpredictable and not repeatable. In practice techniques generally yield random numbers that are difficult or impractical to be reproduced or repeated. The uniqueness or substantial perceived uniqueness of a random number makes it attractive to certain types of applications. For example, random numbers are often used in scientific computations, such as statistical sampling for a population; used in encryption with cryptography; used in gaming applications to determine random wins and loses; and used in other applications.
Typically, random numbers in software are produced by providing a seed value to a random number generator. If a seed value is discovered then the randomness of the generator may be compromised. Additionally, if a pattern is detected from a variety of discovered random numbers, then potentially the pattern can be used to reverse engineer and discover the algorithm and seed values being used by the random generator. Thus, if an intruder can reproduce a seed value by looking at patterns of random numbers or by using discoverable values to produce the seed value, then the intruder may be able to replicate the random number or produce a desired random number. Once a random number is successfully reproduced, then the intruder may break keys and other areas of security.
So, intruders typically look for patterns in the input and/or output for random number generators. The patterns assist in discovering the random number algorithm and thereby comprising applications, which rely on unique and presumably non-reproducible random numbers.
If random numbers are not truly unique than different iterations may yield a same or duplicate random number that was previously produced. Within the parlance of random computing, a “period” refers to iterations before a repeated pattern or repeated number is produced. An infinite period is a desired goal of random computing, but has thus far remained an elusive concept within the industry. That is, most random generation techniques have some period that is less than infinity; meaning a repeated pattern eventually emerges within a random generation technique after some elapsed time or after some number of iterations associated with any given technique.
Therefore, an improved random generation technique is desirable, such that a period associated with that technique approaches or achieves a state of non-repeatability or infinity.